扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年3月7日
关键字: dotnettrend java J2EE
上期文章谈及目前多数企业内系统多是多层式的架构,可分为展示层、中介层与资料层。因此,整合便会在这几层之间产生多种连接点的组合。其中,中间层技术整合最为复杂,包括展示层到中介层(P to D)、中介层到中介层(D to D)等。过去几年间,许多厂商所建构的组件技术与标准即是用来协助于企业内部建立各种分布式系统,包括有:
虽然如此,这些技术基本上还是受限于企业内部,甚至是某些固定的平台之上。虽然微软提出COM Internet Services(CIS)技术,可让DCOM透过port 80沟通;另一方面,SUN也将RMI over Internet Inter-Orb Protocol(IIOP)纳入Java规格,但对于那些需要跨越企业内外网络,甚至是进行不同平台间的整合工程而言仍然不足。
幸运的是,随着企业的需求日增与技术演进,现在我们已拥有多种选择可轻易地整合.NET与J2EE两大平台。在目前的技术中,两者的整合机制可分成三种类型:
底层协定(Wire Level)
这是走低阶协议以进行整合的第一种方式。当然,除了「苦工式」整合,也就是自己建立socket或经HTTP通讯协议进行之外,技术人员也可考虑选用协力厂商的产品,例如:Intrinsyc Software的Ja.NET,或是JNBridge旗下的整合软件等。(前者当然是Java与.NET名称的整合,后者为Java与.NET桥梁的意思)。
其中,「Ja.NET」可视为Java之上的.NET Remoting(编者按:Microsoft .NET Framework内的主要组件)的堆栈实作,而在Java平台上提供Ja.NET的执行时期模块(Run time),可支持TCP/IP、HTTP等沟通管道,也可同时支持SOAP或是二进制互通协议以提升沟通效率。透过此执行时期模块,.NET与Java/J2EE的数据类型不仅可以对应,还能进行双向的沟通。
JNBridge也是类似架构,透过对应的执行时期模块与代理程序(proxy),.NET程序可以在不需要Java原始程序的状况下与这些组件进行互通、继承,并将其视为同一个程序内的.NET组件。以下为JNBridgePro的架构图:
这类整合方式有诸多优点,包括更佳的互通效率、对象参考与生命周期的控制、支持回呼程序(call back)与事件(event),而能有更紧密的整合效益。但相反的,因为是较紧密型的整合,弹性也会变低。另外,这类整合也通常缺少动态寻找并新增服务的机制。一般来说,对于企业内部不同平台的整合仍是非常不错的选择。
讯息队列或集线器(Message Queues或Hub)
点对点的整合只适合初期项目,也许利用上述的底层协议方式,或是下文将会提及的Web services进行互通。但是当.NET有N个模块,J2EE有M个模块,要互通就需要建立「N*M」的点对点联机,复杂性与困难度将之提升。因此,当整合进行到一定规模,可以开始考虑采用类似讯息队列或是集线器等方式进行。
目前可见软件,如MSMQ、IBM WebSphere MQ、Microsoft HIS、BizTalk Server,或者是Mind Electric公司的GAIA等,都能有效的将整合数量如同集线器一样减至N+M的状态。
这类技术概念如同集线器,可以整合不同的接口或透过外挂的Adaptor增加对于不同接口的支持。以Microsoft BizTalk为例,微软与协力厂商所开发的Adaptor便超过一百个,其中包括SAP、Siebel、Java/J2EE、Web services、SQL Server、IBM WebSphere MQ等相对应的Adaptor。
换句话说,只要把先前.NET的N个模块与J2EE的M个模块各自透过Adaptor「安插」至类似BizTalk Server等具备「集线器概念」的服务器,即能整合与应用不同组件。
由于不同平台之间的组件是非常松散结合的(loosely couple),相依性较低而适合N对M的整合以达到「服务导向架构」(SOA)的目标,这也是此类整合的诸多优点之一。例如,将一个.NET组件经Adaptor串接至某集线器概念服务器之后,将可用不同的方式存取此组件,也许是经由J2EE、或者是利用Web services,甚至是IBM的MQ Series。如此一来,对.NET组件开发者而言,完全不必担心未来使用这个组件的对象与技术平台为何。
为满足进阶的需求,这类型服务器部分也内建安全性、交易、路由器等功能,导入成本当然很高,甚至个别的Adaptor也要分开购买,因而适合有大量整合需求的企业采用。
婵犵數濮烽弫鍛婃叏閻戝鈧倹绂掔€n亞鍔﹀銈嗗坊閸嬫捇鏌涢悢閿嬪仴闁糕斁鍋撳銈嗗坊閸嬫挾绱撳鍜冭含妤犵偛鍟灒閻犲洩灏欑粣鐐烘⒑瑜版帒浜伴柛鎾寸洴閹儳煤椤忓應鎷洪梻鍌氱墛閸楁洟宕奸妷銉ф煣濠电姴锕ょ€氼參宕h箛鏃傜瘈濠电姴鍊绘晶娑㈡煕鐎c劌濡介柕鍥у瀵粙濡歌閳ь剚甯¢弻鐔兼寠婢跺﹥娈婚梺鍝勭灱閸犳牠骞冨⿰鍫濈厸闁稿本绋撹ぐ瀣煟鎼淬値娼愭繛鍙壝悾婵堢矙鐠恒劍娈鹃梺鍓插亝濞叉牠鎮″☉銏$厱閻忕偛澧介惌瀣箾閸喐鍊愭慨濠勭帛閹峰懐绮电€n亝鐣伴梻浣规偠閸斿宕¢崘鑼殾闁靛繈鍊曢崘鈧銈嗗姂閸庡崬鐨梻鍌欑劍鐎笛呯矙閹寸姭鍋撳鐓庡籍鐎规洑鍗冲畷鍗炍熼梹鎰泿闂備線娼ч悧鍡涘箠鎼淬垺鍙忔い鎺嗗亾闁宠鍨块崺銉╁幢濡炲墽鍑规繝鐢靛О閸ㄦ椽鏁嬮柧鑽ゅ仦娣囧﹪濡堕崨顔兼闂佺ǹ顑呴崐鍦崲濞戙垹骞㈡俊顖濐嚙绾板秹鏌f惔銏e妞わ妇鏁诲璇差吋閸偅顎囬梻浣告啞閹搁箖宕版惔顭戞晪闁挎繂顦介弫鍡椼€掑顒婂姛闁活厽顨嗙换娑㈠箻閺夋垹鍔伴梺绋款儐閹瑰洭寮婚敐鍛婵炲棙鍔曠壕鎶芥⒑閸濆嫭婀扮紒瀣灴閸╃偤骞嬮敃鈧婵囥亜閺囩偞鍣洪柍璇诧功缁辨捇宕掑▎鎴濆濡炪們鍔岄幊姗€骞嗗畝鍕<闁绘劙娼х粊锕傛煙閸忚偐鏆橀柛鏂跨焸閹偤宕归鐘辩盎闂佸湱鍎ら崹鐢割敂閳哄懏鍊垫慨姗嗗墻濡插綊鏌曢崶褍顏€殿喕绮欐俊姝岊槼闁革絻鍎崇槐鎾存媴缁涘娈┑鈽嗗亝缁诲牆顕f繝姘亜缁炬媽椴搁弲锝夋偡濠婂啰效闁诡喗锕㈤幊鐘活敆閸屾粣绱查梺鍝勵槸閻楀嫰宕濇惔锝囦笉闁绘劗鍎ら悡娑㈡倶閻愯泛袚闁哥姵锕㈤弻鈩冩媴閻熸澘顫掗悗瑙勬礈閸犳牠銆佸鈧幃鈺呮惞椤愩倝鎷婚梻鍌氬€峰ù鍥х暦閸偅鍙忛柟鎯板Г閳锋梻鈧箍鍎遍ˇ顖炲垂閸岀偞鐓㈡俊顖滃皑缁辨岸鏌ㄥ┑鍡╂Ц缂佲偓鐎n偁浜滈柡宥冨妿閳藉绻涢崼鐔虹煉婵﹨娅e☉鐢稿川椤斾勘鈧劕顪冮妶搴′簼婵炶尙鍠栧畷娲焵椤掍降浜滈柟鍝勬娴滈箖姊洪幐搴㈢┛濠碘€虫搐鍗遍柟鐗堟緲缁秹鏌涢锝囩畼妞ゆ挻妞藉铏圭磼濡搫顫岄悗娈垮櫘閸撴瑨鐏冮梺鍛婁緱閸犳岸宕㈤幖浣光拺闁告挻褰冩禍浠嬫煕鐎n亜顏柟顔斤耿閺佸啴宕掑☉姘箞闂佽鍑界紞鍡涘磻閸℃ɑ娅犳い鎺戝€荤壕濂告煕鐏炲墽鈽夌紒妞﹀洦鐓欓柣鐔告緲椤忣參鏌熼悡搴㈣础闁瑰弶鎸冲畷鐔兼濞戞瑦鐝¢梻鍌氬€搁崐椋庣矆娓氣偓楠炴牠顢曢妶鍌氫壕婵ê宕崢瀵糕偓瑙勬礀缂嶅﹪寮婚崱妤婂悑闁告侗鍨界槐閬嶆煟鎼达紕鐣柛搴ㄤ憾钘濆ù鍏兼綑绾捐法鈧箍鍎遍ˇ浼存偂閺囥垺鐓涢柛銉e劚婵$厧顭胯閸ㄤ即婀侀梺缁樓圭粔顕€顢旈崼鐔虹暢闂傚倷鐒︾€笛呮崲閸屾娑樜旈崨顓犲幒闂佸搫娲㈤崹娲偂閸愵亝鍠愭繝濠傜墕缁€鍫熸叏濡寧纭鹃柦鍐枛閺屾洘绻涜鐎氱兘宕戦妸鈺傗拺缂備焦锚婵洦銇勯弴銊ュ籍闁糕斂鍨藉鎾閳ユ枼鍋撻悽鍛婄叆婵犻潧妫楅埀顒傛嚀閳诲秹宕堕妸锝勭盎闂婎偄娲︾粙鎰板箟妤e啯鐓涢悘鐐靛亾缁€瀣偓瑙勬礋娴滃爼銆佸鈧幃銏$附婢跺澶�